Component({
    options: {
        multipleSlots: true // 在组件定义时的选项中启用多slot支持
    },
    externalClasses: ['modalContainer'], //组件中使用的外部样式类
    properties: { //组件的对外属性，是属性名到属性设置的映射表，属性设置中可包含三个字段， type 表示属性类型、 value 表示属性初始值、 observer 表示属性值被更改时的响应函数
        hideCancel: {
            type: Boolean, //传布尔类型的值
            value: false,
        }
    },
    data: { //组件的内部数据，和 properties 一同用于组件的模版渲染
        hidemodal: false,
        imageUrl: '',
        text: '你的挑战次数已用完\n分享到群获得更多挑战机会',
    },
    // 生命周期函数，可以为函数，或一个在methods段中定义的方法名
    created: function() {
        var that = this;

        console.log('创建组件')
    }, //在组件实例进入页面节点树时执行，注意此时不能调用 setData
    attached: function() {
        var that = this;

        console.log('组件实例进入页面节点树')
    }, //在组件实例进入页面节点树时执行
    ready: function() {
        var that = this;

        console.log('组件布局完成')
    }, //在组件布局完成后执行，此时可以获取节点信息（使用 SelectorQuery ）
    // moved: function() {}, //在组件实例被移动到节点树另一个位置时执行
    // detached: function() {}, //在组件实例被从页面节点树移除时执行
    methods: { //组件的方法，包括事件响应函数和任意的自定义方法
        _tapCancel: function() {
            var that = this;

            console.log('用户点击取消')
            this.setData({
                hidemodal: true,
            });
        },
        _tapConfirm: function() {
            var that = this;

            console.log('用户点击确定')
            this.setData({
                hidemodal: true,
            });
            var myEventDetail = { a: 1, b: 2, c: 3 } // detail对象，提供给事件监听函数
            var myEventOption = { bubbles: true, composed: true } // 触发事件的选项
            this.triggerEvent('tapConfirm', myEventDetail, myEventOption)
        }
    }
})